// src/shared/types.js

/**
 * 共享类型定义
 * 用于主进程和渲染进程之间的数据交换
 */

/**
 * 训练配置类型
 * @typedef {Object} TrainingConfig
 * @property {string} modelName - 模型名称
 * @property {number} epochs - 训练轮次
 * @property {number} batchSize - 批次大小
 * @property {number} learningRate - 学习率
 * @property {string} datasetPath - 数据集路径
 */

/**
 * 训练结果类型
 * @typedef {Object} TrainingResult
 * @property {boolean} success - 是否成功
 * @property {string} message - 结果消息
 * @property {Object} [data] - 额外数据
 */

/**
 * 图片信息类型
 * @typedef {Object} ImageInfo
 * @property {string} name - 图片名称
 * @property {string} path - 图片路径
 * @property {number} width - 图片宽度
 * @property {number} height - 图片高度
 */

/**
 * 标注数据类型
 * @typedef {Object} AnnotationData
 * @property {string} imagePath - 图片路径
 * @property {Array<Object>} annotations - 标注列表
 * @property {string} label - 标签名称
 * @property {Object} bbox - 边界框 {x, y, width, height}
 * @property {Array<Object>} [polygon] - 多边形点坐标
 */

/**
 * 训练状态类型
 * @typedef {Object} TrainingStatus
 * @property {string} status - 状态 (idle, running, completed, failed)
 * @property {number} progress - 进度 (0-1)
 * @property {number} currentEpoch - 当前轮次
 * @property {Object} metrics - 训练指标
 * @property {number} metrics.loss - 损失值
 * @property {number} metrics.accuracy - 准确率
 */

// 导出类型定义供其他模块使用
export const TrainingStatus = {
  IDLE: 'idle',
  RUNNING: 'running',
  COMPLETED: 'completed',
  FAILED: 'failed'
}

export const ModelTypes = {
  YOLOV8: 'YOLOv8',
  SEGFORMER: 'SegFormer',
  RESNET: 'ResNet',
  EFFICIENTNET: 'EfficientNet'
}

export const AnnotationTypes = {
  RECTANGLE: 'rectangle',
  POLYGON: 'polygon',
  POINT: 'point'
}
